Inter-table parallel refresh maximizer

ABSTRACT

An approach for inter-table parallel refresh in a database management system (DBMS). An inter-table refresher receives DBMS source and target databases comprising source parent and related source child datasets. The inter-table refresher determines a collection of the source parent and the related source child datasets and creates a collection of parent and child refresh segments based on the collection of the source parent and child datasets. The inter-table refresher creates a collection of parent and child refresh batches based on the collection of parent and child refresh segments respectively and outputs an inter-table refresh batch schedule based on the collection of the parent refresh batches and the collection of the child refresh batches where the collection of the parent refresh batches and the collection of the child refresh batches operate concurrently and a current child refresh batch follows the completion of a respective current parent refresh batch.

BACKGROUND OF THE INVENTION

The present invention relates generally to Database Management System(DBMS) replication and more particularly, to refreshing datasets betweenDBMS sources and targets.

In high availability computing environments, data replication is animportant element to ensure continuous data availability, minimize/avoiddowntime and/or distribute workload of database management systems.Dataset refreshes, as part of data replication function, can also beused to maintain multiple copies of database for database management andadministration needs. A replicated database can be used the event of adata failure/loss and/or to off-load read-only transactions toward areplica DBMS, however activities to refresh datasets can become complexwhen a refresh process is executed while a database is activelyoperating (e.g., insertion, deletion and changing data records). Theprocess of copying data records for a refresh can compete for CPU,interfere with referential integrity rules and cause table locking dueto blocked and/or waiting child table processing. A time-consumingrefresh operation can prevent record access availability and adverselyaffect database availability to users/transactions in actively operatingsystems.

SUMMARY

As disclosed herein, a method for inter-table parallel refresh in adatabase management system (DBMS), the method comprising: receiving, byone or more computer processors, DBMS source database and DBMS targetdatabase wherein the DBMS source database comprise source parentdatasets and related source child datasets; determining, by one or morecomputer processors, a collection of the source parent datasets and therelated source child datasets for the inter-table refresh, whereindetermining the related source child datasets is based on matching asource child dataset key field identifier with at least one of a sourceparent dataset key identifier or a source parent dataset foreign keyidentifiers; creating, by one or more computer processors, a collectionof parent refresh segments and a related collection of child refreshsegments based on the collection of the source parent datasets and therelated source child datasets, wherein each parent refresh segment ofthe collection of parent refresh segments comprises a group of rowssubdividing the source parent datasets, and wherein each child refreshsegment of the related collection of child refresh segments comprises arelated group of rows subdividing the source child datasets; creating,by one or more computer processors, a collection of parent refreshbatches and a collection of child refresh batches based on thecollection of parent refresh segments and the collection of childrefresh segments respectively; outputting, by one or more computerprocessors, an inter-table refresh batch schedule based on thecollection of the parent refresh batches and the collection of the childrefresh batches, wherein the collection of the parent refresh batchesand the collection of the child refresh batches operate concurrently anda current child refresh batch follows a completion of a respectivecurrent parent refresh batch; identifying, by one or more computerprocessors, a sub-child wherein the sub-child is based on a first sourcechild dataset being related to a second source child dataset wherein afirst source child dataset foreign key identifier matches a secondsource child dataset key identifier; responsive to identifying thesub-child, marking, by one or more computer processors, the first sourcechild dataset as a source parent dataset and marking the sub-child as asource child dataset for recursive processing of the inter-tablerefresh; and executing, by one or more computer processors, theinter-table refresh batch schedule.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention is described in the detailed description whichfollows, in reference to the noted plurality of drawings by way ofnon-limiting examples of exemplary embodiments of the present invention.

FIG. 1 illustrates a functional block diagram of a computingenvironment, in accordance with an embodiment of the present invention;

FIG. 2 illustrates a flowchart of inter-table refresher, in accordancewith an embodiment of the present invention;

FIG. 3A illustrates segmented parent/child datasets, in accordance withan embodiment of the present invention;

FIG. 3B illustrates parent/child dataset batch scheduling, in accordancewith an embodiment of the present invention; and

FIG. 4 illustrates a block diagram of components of the server and/orthe computing device, in accordance with an embodiment of the presentinvention.

DETAILED DESCRIPTION

Embodiments of the present invention provide an approach to refreshDatabase Management System (DBMS) datasets from a DBMS source to a DBMStarget using an automated technique. Parent and child datasetrelationships can be determined from database metadata and dataset datais segmented into groupings based on key value ranges and referentialdataset rules to minimize record locks and maximize data availability ina “refresh while active” environment (e.g., dataset refresh whileprocessing transactions). Embodiments of the present invention canschedule and/or execute a refresh of the parent/child datasets inparallel and in an automated top down approach by progressing fromparent toward child tables concurrently. A parent dataset can be definedas a relational table and/or data structure of interest and a childdataset can be defined as table and/or data structure that share keyfield(s) with a parent dataset via a parent key/foreign key field(s).

Embodiments of the present invention will now be described in detailwith reference to the figures. It should be noted that references in thespecification to “an exemplary embodiment,” “other embodiments,” etc.,indicate that the embodiment described may include a particular feature,structure, or characteristic, but every embodiment may not necessarilyinclude the particular feature, structure, or characteristic. Moreover,such phrases are not necessarily referring to the same embodiment.Further, when a particular feature, structure or characteristic isdescribed in connection with an embodiment, it is submitted that it iswithin the knowledge of one skilled in the art to affect such feature,structure or characteristic in connection with other embodiments whetheror not explicitly described.

FIG. 1 illustrates a functional block diagram of computing environment100, in accordance with an embodiment of the present invention.Computing environment 100 comprises COMMUNICATION DEVICE 110 andCOMPUTER SYSTEM 120, interconnected via NETWORK 140. COMMUNICATIONDEVICE 110 and COMPUTER SYSTEM 120 can be desktop computers, laptopcomputers, specialized computer servers, or the like. In certainembodiments, COMMUNICATION DEVICE 110 and COMPUTER SYSTEM 120 representcomputer systems utilizing clustered computers and components acting asa single pool of seamless resources via NETWORK 140. For example, suchembodiments can be used in data center, cloud computing, storage areanetwork (SAN) and network attached storage (NAS) applications. Ingeneral, COMMUNICATION DEVICE 110 and COMPUTER SYSTEM 120 arerepresentative of any electronic devices, or combination of electronicdevices, capable of executing computer readable program instructions, asdescribed in detail with regard to FIG. 4.

In some embodiments, COMMUNICATION DEVICE 110 comprises USERAPPLICATION(S) 112, where USER APPLICATION(S) 112 can be a plurality ofUSER APPLICATION(S) 112 within COMMUNICATION DEVICE 110. USERAPPLICATION(S) 112 can access and manage database operations related toDBMS's and data replication/refreshes. In some embodiments, USERAPPLICATION(S) 112 can comprise any combination of commercial or customdevices and/or software products associated with accessing and managingdatabase operations related to DBMS's and data replication/refreshes.

NETWORK 140 can be, for example, a local area network (LAN), a wide areanetwork (WAN) such as the Internet, or a combination of the two, andinclude wired, wireless, or fiber optic connections. In general, NETWORK140 can be any combination of connections and protocols that can supportcommunications between COMMUNICATION DEVICE 110 and COMPUTER SYSTEM 120,in accordance with some embodiments.

In some embodiments, COMPUTER SYSTEM 120 can be a plurality of COMPUTERSYSTEMS 120 and can be a separate and/or integrated tool that can beoperate one or more database management systems. COMPUTER SYSTEM 120comprises, DBMS SOURCE 122, DBMS TARGET 124 and DATA REPLICATOR 126.

In some embodiments, DBMS SOURCE 122 can be a plurality of DBMS SOURCES122 within COMPUTER SYSTEM 120. DBMS SOURCE 122 can be a source ofparent and child datasets being refreshed toward DBMS TARGET 124 by aninter-table refresher. It should be noted that DBMS SOURCE 122 cancomprise database metadata (e.g., data about data) that can be used asan information source to determine dataset relationships and associateddataset referential integrity rules.

In some embodiments, DBMS TARGET 124 can be a plurality of DBMS TARGETS124 within COMPUTER SYSTEM 120. DBMS TARGET 124 can be atarget/destination of parent and child datasets being refreshed fromDBMS SOURCE 122 by the inter-table refresher. It should be noted thatDBMS TARGET 124 can comprise similar database metadata as DBMS SOURCE122 to support functions such as, but not limited to, fail-overoperations.

In some embodiments, DATA REPLICATOR 126 can be a plurality of DATAREPLICATORS 126 within COMPUTER SYSTEM 120. DATA REPLICATOR 126comprises INTER-TABLE REFRESHER 130. DATA REPLICATOR 126 can managereplication of databases in environments such as, but not limited to,high availability and continuous availability architectures and cancomprise any combination of commercial or custom devices and/or softwareproducts associated with data replication. Examples of commercialreplication tools can comprise Oracle® GoldenGate and IBM InfoSphere®Data Replication.

In some embodiments, INTER-TABLE REFRESHER 130 can be a plurality ofINTER-TABLE REFRESHERS 130 within DATA REPLICATOR 126. INTER-TABLEREFRESHER 130 can be operated to perform inter-table refreshes in aparallel processing mode. INTER-TABLE REFRESHER 130 comprises, SOURCESEGMENTER 132, SCHEDULE CREATOR 134 and RELATIONSHIP ANALYZER 136. Inembodiments of the present invention, INTER-TABLE REFRESHER 130 canoperate in conjunction with a combination of commercial or customdevices and/or software products associated with performing inter-tabledata refresh in accordance with some embodiments.

In some embodiments, RELATIONSHIP ANALYZER 136 can be a plurality ofRELATIONSHIP ANALYZERS 136 within INTER-TABLE REFRESHER 130.RELATIONSHIP ANALYZER 136 can determine source parent datasets andrelated source child datasets in DBMS SOURCE 122 using systemcatalog/database metadata for datasets identified for refresh. A datasetcan be determined as a parent by metadata identifiers such as, but notlimited to, table category and primary key field relationships withsubordinate key fields. Database metadata can be analyzed for eachsource parent dataset, comprising a refresh, to identify source childdataset(s) relationships. Parent key field identifier(s) and parentforeign key identifier(s) can be used to identify one or more sourcechild datasets based on matching related one or more child key fieldidentifiers with the parent key field identifier(s) and/or the parentforeign key identifier(s). It should be noted that RELATIONSHIP ANALYZER136 can receive identification of datasets to be refreshed from areplication log stored in locations such as, but not limited to, DATAREPLICATOR 126, DBMS SOURCE 122 and DBMS TARGET 124. The replication logcan be used to during a complete and/or partial DBMS SOURCE 122 refreshto identify controlling information such as, but not limited to, whichdatasets data have been updated/inserted/deleted during a refresh cycleand which dataset data has been refreshed with no data change since pastrefresh.

In some embodiments, SOURCE SEGMENTER 132 can be a plurality of SOURCESEGMENTERS 132 within INTER-TABLE REFRESHER 130. SOURCE SEGMENTER 132can be operate on a received parent dataset and related child dataset(s)in DBMS SOURCE 122 to segment parent dataset into parent refreshsegments based on a predetermined row count and determining relatedchild refresh segments of the related child dataset(s) for refreshtoward DBMS TARGET 124.

In some embodiments, SCHEDULE CREATOR 134 can be a plurality of SCHEDULECREATORS 134 within INTER-TABLE REFRESHER 130. SCHEDULE CREATOR 134 canbe create/output a series of parent/child refresh batches that canrefresh data from DBMS SOURCE 122 toward DBMS TARGET 124 based on SOURCESEGMENTER 132 groupings. The parent/child refresh batches can besequenced to refresh a current parent batch followed by a current childbatch and as the current parent batch completes, a next parent batch canbe started in parallel to the current child batch. The offset andparallel processing of batches can proceed concurrently until the parentdataset refresh operation is complete.

FIG. 2 illustrates a flowchart of inter-table refresher, in accordancewith an embodiment of the present invention. Inter-table refresher flow200, comprises operations RECEIVE SOURCE & TARGET INPUT 202, DETERMINERELATIONSHIPS 204, CREATE SEGMENTATION 206, CREATE REFRESH BATCHES 208,OUTPUT BATCH SCHEDULE 210 and PARENT COMPLETE 212.

Operation RECEIVE SOURCE & TARGET INPUT 202, can receive a sourcedatabase (e.g., DBMS SOURCE 122) and target database (e.g., DBMS TARGET124) to be refreshed. In some embodiments, operation RECEIVE SOURCE &TARGET INPUT 202 can also receive a collection of parent datasets to berefreshed for selective dataset refresh. It should be noted that sourceand target information can be received from processes such as, but notlimited to, DATA REPLICATOR 126. When operation RECEIVE SOURCE & TARGETINPUT 202 completes, processing proceeds toward operation DETERMINERELATIONSHIPS 204.

Operation DETERMINE RELATIONSHIPS 204, can receive DBMS SOURCE 122metadata by RELATIONSHIP ANALYZER 136 to create a collection of sourceparent dataset(s) and/or source child dataset(s) to be refreshed. Itshould be noted that each of the source parent datasets, comprising thecollection of source parent dataset(s) can further comprise one or morerelated source child datasets. When operation DETERMINE RELATIONSHIPS204 completes, processing proceeds toward operation CREATE SEGMENTATION206.

Operation CREATE SEGMENTATION 206, can create a collection of parentrefresh segments/groupings based on each source parent dataset from thecollection of source parent dataset(s) and/or source child dataset(s).The parent refresh segments can be a range of dataset rows thatsubdivide a current source parent dataset. A size of a parent refreshsegment can be determined by methods such as, but not limited to, apredetermined quantity and/or grouping of key field(s) records, apercentage of a dataset size, an entire and/or a fraction of a databasepage/extent and a range of timestamps associated with dataset changerecords. Further, operation CREATE SEGMENTATION 206, can create acollection of child refresh segments/groupings based on each sourcechild dataset from the collection of source parent dataset(s) and/orsource child dataset(s) where the child refresh segments can be a rangeof dataset rows that subdivide a source child dataset and a size of achild refresh segments can be dynamic and based on encompassing relatedrecords in each source child dataset that is related to a respectiveparent refresh segment. For example, a Structured Query Language (SQL)join predicate, such as, but not limited to, WHEREparent.foreign_key=child.key could be used to determine child refreshsegments related to respective parent refresh segments. It should benoted that a child dataset can comprise related children datasets (e.g.,sub-child of parent dataset) and in this case, operation CREATESEGMENTATION 206 can retrieve data rows with the WHERE clause thatreferences the child/grandchild key/foreign key to determine thedistribution of data for each of the child/sub-child tables. If asub-child is determined, based on a first source child dataset foreignkey identifier matching a second source child dataset key identifier,then operation CREATE SEGMENTATION 206 can respond bymarking/identifying the first source child dataset as a source parentdataset and marking/identifying the sub-child as a source child datasetin a recursive process until found sub-children are segmented. Whenoperation CREATE SEGMENTATION 206 completes for a current source parentdataset, processing proceeds toward operation CREATE REFRESH BATCHES208.

Operation CREATE REFRESH BATCHES 208, can create a collection of parentrefresh batch where each of the parent refresh batches comprise datasetrefresh instructions for one of the parent refresh segments comprisingthe collection of parent refresh segments, to refresh from DBMS SOURCE122 toward DBMS TARGET 124. Further, operation CREATE REFRESH BATCHES208, can create a collection of child refresh batches where each of thechild refresh batches comprise dataset refresh instructions for one ofthe child refresh segments comprising the collection of child refreshsegments, to refresh from DBMS SOURCE 122 toward DBMS TARGET 124. Itshould be noted that some embodiments can combine parent refresh batchesand child refresh batches provided, batch scheduling can independentlycontrol parent refresh batches and child refresh batches. When operationCREATE REFRESH BATCHES 208 completes, processing proceeds towardoperation OUTPUT BATCH SCHEDULE 210.

Operation OUTPUT BATCH SCHEDULE 210, can output an inter-table refreshjob schedule based on the collection of the parent refresh batches andthe collection of the child refresh batches. An inter-table refresh jobschedule can combine the collection of the parent refresh batches andthe collection of the child refresh batches to operate concurrentlywhere a current child refresh batch follows a completion a respectivecurrent parent refresh batch and a next parent refresh batch can beinitiated as current child refresh batch is executed in parallel. Theinter-table refresh job schedule can encompass the collection of theparent refresh batches and the collection of the child refresh batchesand/or a plurality of inter-table refresh job schedules can be output tosupport implementation flexibility/limitations. It should be noted thata child dataset can comprise related children datasets (e.g., sub-childof parent dataset) and in this case, operation OUTPUT BATCH SCHEDULE 210can cascade sub-child refresh batches in a similar process as childrefresh batch sequencing. It should be further noted that unrelateddatasets can be processed in parallel where related dataset can beprocessed in sequentially. It should be noted that operation OUTPUTBATCH SCHEDULE 210 can save the inter-table refresh job schedule forlater execution and/or operation OUTPUT BATCH SCHEDULE 210 submit theinter-table refresh job schedule toward a DBMS job scheduler forexecution. When operation OUTPUT BATCH SCHEDULE 210 completes,processing can continue toward operation PARENT COMPLETE 212.

Operation PARENT COMPLETE 212, can determine if a source parent dataset,comprising the collection of source parent dataset(s), has beenprocessed by operation CREATE SEGMENTATION 206. If source parent datasetprocessing is complete (e.g., source parent datasets in the collectionof source parent dataset(s) have been processed), then processing ends,otherwise processing can proceed toward operation CREATE SEGMENTATION206 to execute a next refresh operation.

FIG. 3A illustrates segmented parent/child datasets, in accordance withan embodiment of the present invention. The parent/child datasetsegments 300 comprises items PARENT TABLE 302, CHILD TABLE 304, PARTIALPARENT TABLE 306, PARTIAL CHILD TABLE 308, KEY_1 310, F_KEY_1 312,C1_KEY_1 314, PARENT_SEGMENT_1 316, PARENT_SEGMENT_2 318 andCHILD_SEGMENT_1 320.

Item PARENT TABLE 302 illustrates a source parent table comprisingrecords for an inter-table refresh, item CHILD TABLE 304 illustrates asource child related to the parent table (e.g., item PARENT TABLE 302),item PARTIAL PARENT TABLE 306 illustrates a filtered source parent tableand item PARTIAL CHILD TABLE 308 illustrates a filtered source childtable.

Item KEY_1 310 illustrates item PARENT TABLE 302 key column and can beused as a basis for creating parent refresh segments and/or searchingfor related child table records.

Item F_KEY_1 312 illustrates a parent table foreign key column and inthis example identifies a relationship to item C1_KEY_1 314 where itemC1_KEY_1 314 illustrates item CHILD TABLE 304 key column.

Item PARENT_SEGMENT_1 316 illustrates a first parent refresh segment ofa source parent table and in this example the parent refresh segmentsize is five records. Item PARENT_SEGMENT_2 318 illustrates a secondparent refresh segment of five records from item PARENT TABLE 302.

Item CHILD_SEGMENT_1 320 illustrates a first child refresh segment of asource child table and is based on the matches of foreign key values(e.g., item F_KEY_1 312) encompassed by the first parent refresh segment(e.g., item PARENT_SEGMENT_1 316) with child table key values (e.g.,item C1_KEY_1 314).

FIG. 3B illustrates parent/child dataset batch scheduling, in accordancewith an embodiment of the present invention. The refresh log 350represents batch schedule output by INTER-TABLE REFRESHER 130 andcomprises items BATCH 1A 352, BATCH 1B 354 and BATCH 2A 356.

Item BATCH 1A 352 illustrates a batch to process a first parent refreshsegment (e.g., item PARENT_SEGMENT_1 316) from a source parent dataset(e.g., in DBMS SOURCE 122) to a target parent dataset (e.g., in DBMSTARGET 124).

Item BATCH 1B 354 illustrates a batch to process a first child refreshsegment (e.g., item CHILD_SEGMENT_1 320) from a source child dataset(e.g., in DBMS SOURCE 122) to a target child dataset (e.g., in DBMSTARGET 124). It should be noted that item BATCH 1B 354 is scheduled toexecute proceeding item BATCH 1A 352.

Item BATCH 2A 356 illustrates a batch to process a second parent refreshsegment (e.g., item PARENT_SEGMENT_2 318) from a source parent dataset(e.g., in DBMS SOURCE 122) to a target parent dataset (e.g., in DBMSTARGET 124). It should be noted that item BATCH 2A 356 is scheduledproceeding item BATCH 1A 352 and in parallel to item BATCH 1B 354. Itshould be further noted that the remainder of FIG. 3B illustratesconcurrent processing of an inter-table refresh of a plurality of parentrefresh segments and respective child refresh segments.

FIG. 4 illustrates a block diagram of components of COMMUNICATION DEVICE110 and COMPUTER SYSTEM 120 in accordance with an illustrativeembodiment of the present invention. It should be appreciated that FIG.4 provides only an illustration of one implementation and does not implyany limitations with regard to the environments in which differentembodiments may be implemented. Many modifications to the depictedenvironment may be made.

Computer system 400 includes communications fabric 402, which providescommunications between computer processor(s) 404, memory 406, persistentstorage 408, communications unit 410, and input/output (I/O)interface(s) 412. Communications fabric 402 can be implemented with anyarchitecture designed for passing data and/or control informationbetween processors (such as microprocessors, communications and networkprocessors, etc.), system memory, peripheral devices, and any otherhardware components within a system. For example, communications fabric402 can be implemented with one or more buses.

Computer system 400 includes processors 404, cache 416, memory 406,persistent storage 408, communications unit 410, input/output (I/O)interface(s) 412 and communications fabric 402. Communications fabric402 provides communications between cache 416, memory 406, persistentstorage 408, communications unit 410, and input/output (I/O)interface(s) 412. Communications fabric 402 can be implemented with anyarchitecture designed for passing data and/or control informationbetween processors (such as microprocessors, communications and networkprocessors, etc.), system memory, peripheral devices, and any otherhardware components within a system. For example, communications fabric402 can be implemented with one or more buses or a crossbar switch.

Memory 406 and persistent storage 408 are computer readable storagemedia. In this embodiment, memory 406 includes random access memory(RAM). In general, memory 406 can include any suitable volatile ornon-volatile computer readable storage media. Cache 416 is a fast memorythat enhances the performance of processors 404 by holding recentlyaccessed data, and data near recently accessed data, from memory 406.

Program instructions and data used to practice embodiments of thepresent invention may be stored in persistent storage 408 and in memory406 for execution by one or more of the respective processors 404 viacache 416. In an embodiment, persistent storage 408 includes a magnetichard disk drive. Alternatively, or in addition to a magnetic hard diskdrive, persistent storage 408 can include a solid state hard drive, asemiconductor storage device, read-only memory (ROM), erasableprogrammable read-only memory (EPROM), flash memory, or any othercomputer readable storage media that is capable of storing programinstructions or digital information.

The media used by persistent storage 408 may also be removable. Forexample, a removable hard drive may be used for persistent storage 408.Other examples include optical and magnetic disks, thumb drives, andsmart cards that are inserted into a drive for transfer onto anothercomputer readable storage medium that is also part of persistent storage408.

Communications unit 410, in these examples, provides for communicationswith other data processing systems or devices. In these examples,communications unit 410 includes one or more network interface cards.Communications unit 410 may provide communications through the use ofeither or both physical and wireless communications links. Programinstructions and data used to practice embodiments of the presentinvention may be downloaded to persistent storage 408 throughcommunications unit 410.

I/O interface(s) 412 allows for input and output of data with otherdevices that may be connected to each computer system. For example, I/Ointerface 412 may provide a connection to external devices 418 such as akeyboard, keypad, a touch screen, and/or some other suitable inputdevice. External devices 418 can also include portable computer readablestorage media such as, for example, thumb drives, portable optical ormagnetic disks, and memory cards. Software and data used to practiceembodiments of the present invention can be stored on such portablecomputer readable storage media and can be loaded onto persistentstorage 408 via I/O interface(s) 412. I/O interface(s) 412 also connectto display 420.

Display 420 provides a mechanism to display data to a user and may be,for example, a computer monitor.

The programs described herein are identified based upon the applicationfor which they are implemented in a specific embodiment of theinvention. However, it should be appreciated that any particular programnomenclature herein is used merely for convenience, and thus theinvention should not be limited to use solely in any specificapplication identified and/or implied by such nomenclature.

The present invention may be a system, a method, and/or a computerprogram product. The computer program product may include a computerreadable storage medium (or media) having computer readable programinstructions thereon for causing a processor to carry out aspects of thepresent invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, or either source code or object code written in anycombination of one or more programming languages, including an objectoriented programming language such as Smalltalk, C++ or the like, andconventional procedural programming languages, such as the “C”programming language or similar programming languages. The computerreadable program instructions may execute entirely on the user'scomputer, partly on the user's computer, as a stand-alone softwarepackage, partly on the user's computer and partly on a remote computeror entirely on the remote computer or server. In the latter scenario,the remote computer may be connected to the user's computer through anytype of network, including a local area network (LAN) or a wide areanetwork (WAN), or the connection may be made to an external computer(for example, through the Internet using an Internet Service Provider).In some embodiments, electronic circuitry including, for example,programmable logic circuitry, field-programmable gate arrays (FPGA), orprogrammable logic arrays (PLA) may execute the computer readableprogram instructions by utilizing state information of the computerreadable program instructions to personalize the electronic circuitry,in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

The descriptions of the various embodiments of the present inventionhave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the invention.The terminology used herein was chosen to best explain the principles ofthe embodiment, the practical application or technical improvement overtechnologies found in the marketplace, or to enable others of ordinaryskill in the art to understand the embodiments disclosed herein.

The term “present invention” should not be taken as an absoluteindication that the subject matter described by the term “presentinvention” is covered by either the claims as they are filed, or by theclaims that may eventually issue after patent prosecution; while theterm “present invention” is used to help the reader to get a generalfeel for which disclosures herein are believed to potentially be new,this understanding, as indicated by use of the term “present invention,”is tentative and provisional and subject to change over the course ofpatent prosecution as relevant information is developed and as theclaims are potentially amended.

The term “and/or” should be understood as inclusive or; for example, A,B “and/or” C means that at least one of A, B or C is true andapplicable. Further, “at least one of A, B, or C” should be interpretedto mean only A, only B, only C, or any combination of A, B, and C.

What is claimed is:
 1. A method for inter-table parallel refresh in adatabase management system (DBMS), the method comprising: receiving, byone or more computer processors, DBMS source database and DBMS targetdatabase wherein the DBMS source database comprise source parentdatasets and related source child datasets; determining, by one or morecomputer processors, a collection of the source parent datasets and therelated source child datasets for the inter-table refresh, whereindetermining the related source child datasets is based on matching asource child dataset key field identifier with at least one of a sourceparent dataset key identifier or a source parent dataset foreign keyidentifiers; creating, by one or more computer processors, a collectionof parent refresh segments and a related collection of child refreshsegments based on the collection of the source parent datasets and therelated source child datasets, wherein each parent refresh segment ofthe collection of parent refresh segments comprises a group of rowssubdividing the source parent datasets, and wherein each child refreshsegment of the related collection of child refresh segments comprises arelated group of rows subdividing the source child datasets; creating,by one or more computer processors, a collection of parent refreshbatches and a collection of child refresh batches based on thecollection of parent refresh segments and the collection of childrefresh segments respectively; outputting, by one or more computerprocessors, an inter-table refresh batch schedule based on thecollection of the parent refresh batches and the collection of the childrefresh batches, wherein the collection of the parent refresh batchesand the collection of the child refresh batches operate concurrently anda current child refresh batch follows a completion of a respectivecurrent parent refresh batch; identifying, by one or more computerprocessors, a sub-child wherein the sub-child is based on a first sourcechild dataset being related to a second source child dataset wherein afirst source child dataset foreign key identifier matches a secondsource child dataset key identifier; responsive to identifying thesub-child, marking, by one or more computer processors, the first sourcechild dataset as a source parent dataset and marking the sub-child as asource child dataset for recursive processing of the inter-tablerefresh; and executing, by one or more computer processors, theinter-table refresh batch schedule.